package com.zhangsr.zus.rpc.api;

import com.zhangsr.zus.common.URL;
import com.zhangsr.zus.rpc.api.exception.RpcException;

/**
 * @Author: zhangsr
 */
public interface RpcProxyFactory {

    /**
     * create proxy.
     *
     * @param invoker
     * @return proxy
     */
    <T> T getProxy(Invoker<T> invoker)  throws RpcException;

    /**
     * create invoker.
     *
     * @param proxy
     * @param type
     * @param url
     * @param <T>
     * @return
     */
    <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url)  throws RpcException;

}
